@@ -63,4 +63,4 @@ media/  | 
            ||
| 63 | 63 | 
                collect_static/  | 
            
| 64 | 64 | 
                 | 
            
| 65 | 65 | 
                # Special File  | 
            
| 66 | 
                -download.html  | 
            |
| 66 | 
                +*download.html  | 
            
                @@ -11,15 +11,20 @@ from utils.redis.rversion import delete_guest_entrance_control, set_guest_entran  | 
            ||
| 11 | 11 | 
                 | 
            
| 12 | 12 | 
                 | 
            
| 13 | 13 | 
                class LatestAppInfoAdmin(admin.ModelAdmin):  | 
            
| 14 | 
                -    list_display = ('latest_version', 'latest_app', 'latest_url', 'status', 'created_at', 'updated_at')
               | 
            |
| 14 | 
                +    list_display = ('latest_adr_version_code', 'latest_adr_version_name', 'latest_adr_app', 'latest_adr_url', 'latest_ios_version_code', 'latest_ios_version_name', 'latest_ios_url', 'status', 'created_at', 'updated_at')
               | 
            |
| 15 | 15 | 
                 | 
            
| 16 | 16 | 
                def save_model(self, request, obj, form, change):  | 
            
| 17 | 17 | 
                obj.save()  | 
            
| 18 | 18 | 
                 | 
            
| 19 | 
                - # 更新下载页面  | 
            |
| 19 | 
                + # 更新安卓下载页面  | 
            |
| 20 | 20 | 
                         write_to_disk(render_to_string('page/download.tmpl.html', {
               | 
            
| 21 | 
                - 'version': obj.latest_version,  | 
            |
| 22 | 
                - }), settings.DOWNLOAD_PAGE_PATH)  | 
            |
| 21 | 
                + 'version': obj.latest_adr_version_name,  | 
            |
| 22 | 
                + }), settings.DOWNLOAD_ADR_PAGE_PATH)  | 
            |
| 23 | 
                +  | 
            |
| 24 | 
                + # 更新 iOS 下载页面  | 
            |
| 25 | 
                +        write_to_disk(render_to_string('page/download.tmpl.html', {
               | 
            |
| 26 | 
                + 'version': obj.latest_ios_version_name,  | 
            |
| 27 | 
                + }), settings.DOWNLOAD_IOS_PAGE_PATH)  | 
            |
| 23 | 28 | 
                 | 
            
| 24 | 29 | 
                # 设置最新 APP 信息  | 
            
| 25 | 30 | 
                set_latest_app()  | 
            
                @@ -0,0 +1,62 @@  | 
            ||
| 1 | 
                +# -*- coding: utf-8 -*-  | 
            |
| 2 | 
                +from __future__ import unicode_literals  | 
            |
| 3 | 
                +  | 
            |
| 4 | 
                +from django.db import models, migrations  | 
            |
| 5 | 
                +import operation.models  | 
            |
| 6 | 
                +  | 
            |
| 7 | 
                +  | 
            |
| 8 | 
                +class Migration(migrations.Migration):  | 
            |
| 9 | 
                +  | 
            |
| 10 | 
                + dependencies = [  | 
            |
| 11 | 
                +        ('operation', '0004_guestentrancecontrolinfo'),
               | 
            |
| 12 | 
                + ]  | 
            |
| 13 | 
                +  | 
            |
| 14 | 
                + operations = [  | 
            |
| 15 | 
                + migrations.RemoveField(  | 
            |
| 16 | 
                + model_name='latestappinfo',  | 
            |
| 17 | 
                + name='latest_app',  | 
            |
| 18 | 
                + ),  | 
            |
| 19 | 
                + migrations.RemoveField(  | 
            |
| 20 | 
                + model_name='latestappinfo',  | 
            |
| 21 | 
                + name='latest_url',  | 
            |
| 22 | 
                + ),  | 
            |
| 23 | 
                + migrations.RemoveField(  | 
            |
| 24 | 
                + model_name='latestappinfo',  | 
            |
| 25 | 
                + name='latest_version',  | 
            |
| 26 | 
                + ),  | 
            |
| 27 | 
                + migrations.AddField(  | 
            |
| 28 | 
                + model_name='latestappinfo',  | 
            |
| 29 | 
                + name='latest_adr_app',  | 
            |
| 30 | 
                + field=models.FileField(help_text='\u6700\u65b0\u7248\u5b89\u5353 APP', upload_to=operation.models.upload_path, null=True, verbose_name='latest_adr_app', blank=True),  | 
            |
| 31 | 
                + ),  | 
            |
| 32 | 
                + migrations.AddField(  | 
            |
| 33 | 
                + model_name='latestappinfo',  | 
            |
| 34 | 
                + name='latest_adr_url',  | 
            |
| 35 | 
                + field=models.URLField(help_text='\u6700\u65b0\u7248 APP \u94fe\u63a5', max_length=255, null=True, verbose_name='latest_adr_url', blank=True),  | 
            |
| 36 | 
                + ),  | 
            |
| 37 | 
                + migrations.AddField(  | 
            |
| 38 | 
                + model_name='latestappinfo',  | 
            |
| 39 | 
                + name='latest_adr_version_code',  | 
            |
| 40 | 
                + field=models.IntegerField(default=0, help_text='\u6700\u65b0\u5b89\u5353\u7248\u672c\u53f7', verbose_name='latest_adr_version_code'),  | 
            |
| 41 | 
                + ),  | 
            |
| 42 | 
                + migrations.AddField(  | 
            |
| 43 | 
                + model_name='latestappinfo',  | 
            |
| 44 | 
                + name='latest_adr_version_name',  | 
            |
| 45 | 
                + field=models.CharField(help_text='\u6700\u65b0\u5b89\u5353\u7248\u672c\u540d', max_length=255, null=True, verbose_name='latest_adr_version_name', blank=True),  | 
            |
| 46 | 
                + ),  | 
            |
| 47 | 
                + migrations.AddField(  | 
            |
| 48 | 
                + model_name='latestappinfo',  | 
            |
| 49 | 
                + name='latest_ios_url',  | 
            |
| 50 | 
                + field=models.URLField(help_text='\u6700\u65b0\u7248 iOS \u94fe\u63a5', max_length=255, null=True, verbose_name='latest_ios_url', blank=True),  | 
            |
| 51 | 
                + ),  | 
            |
| 52 | 
                + migrations.AddField(  | 
            |
| 53 | 
                + model_name='latestappinfo',  | 
            |
| 54 | 
                + name='latest_ios_version_code',  | 
            |
| 55 | 
                + field=models.IntegerField(default=0, help_text='\u6700\u65b0 iOS \u7248\u672c\u53f7', verbose_name='latest_ios_version_code'),  | 
            |
| 56 | 
                + ),  | 
            |
| 57 | 
                + migrations.AddField(  | 
            |
| 58 | 
                + model_name='latestappinfo',  | 
            |
| 59 | 
                + name='latest_ios_version_name',  | 
            |
| 60 | 
                + field=models.CharField(help_text='\u6700\u65b0 iOS \u7248\u672c\u540d', max_length=255, null=True, verbose_name='latest_ios_version_name', blank=True),  | 
            |
| 61 | 
                + ),  | 
            |
| 62 | 
                + ]  | 
            
                @@ -23,9 +23,14 @@ def upload_path(instance, old_filename):  | 
            ||
| 23 | 23 | 
                 | 
            
| 24 | 24 | 
                 | 
            
| 25 | 25 | 
                class LatestAppInfo(CreateUpdateMixin):  | 
            
| 26 | 
                - latest_version = models.CharField(_(u'latest_version'), max_length=255, help_text=u'最新版本')  | 
            |
| 27 | 
                - latest_app = models.FileField(_(u'latest_app'), upload_to=upload_path, blank=True, null=True, help_text=u'最新版 APP')  | 
            |
| 28 | 
                - latest_url = models.URLField(_(u'latest_url'), max_length=255, blank=True, null=True, help_text=u'最新版 APP 链接')  | 
            |
| 26 | 
                + latest_adr_version_code = models.IntegerField(_(u'latest_adr_version_code'), default=0, help_text=u'最新安卓版本号')  | 
            |
| 27 | 
                + latest_adr_version_name = models.CharField(_(u'latest_adr_version_name'), max_length=255, blank=True, null=True, help_text=u'最新安卓版本名')  | 
            |
| 28 | 
                + latest_adr_app = models.FileField(_(u'latest_adr_app'), upload_to=upload_path, blank=True, null=True, help_text=u'最新版安卓 APP')  | 
            |
| 29 | 
                + latest_adr_url = models.URLField(_(u'latest_adr_url'), max_length=255, blank=True, null=True, help_text=u'最新版 APP 链接')  | 
            |
| 30 | 
                +  | 
            |
| 31 | 
                + latest_ios_version_code = models.IntegerField(_(u'latest_ios_version_code'), default=0, help_text=u'最新 iOS 版本号')  | 
            |
| 32 | 
                + latest_ios_version_name = models.CharField(_(u'latest_ios_version_name'), max_length=255, blank=True, null=True, help_text=u'最新 iOS 版本名')  | 
            |
| 33 | 
                + latest_ios_url = models.URLField(_(u'latest_ios_url'), max_length=255, blank=True, null=True, help_text=u'最新版 iOS 链接')  | 
            |
| 29 | 34 | 
                 | 
            
| 30 | 35 | 
                class Meta:  | 
            
| 31 | 36 | 
                         verbose_name = _('latestappinfo')
               | 
            
                @@ -35,14 +40,18 @@ class LatestAppInfo(CreateUpdateMixin):  | 
            ||
| 35 | 40 | 
                         return u'{0.pk}'.format(self)
               | 
            
| 36 | 41 | 
                 | 
            
| 37 | 42 | 
                @property  | 
            
| 38 | 
                - def final_latest_url(self):  | 
            |
| 39 | 
                -        return self.latest_url or u'{}{}'.format(settings.DOMAIN, self.latest_app and self.latest_app.url)
               | 
            |
| 43 | 
                + def final_latest_adr_url(self):  | 
            |
| 44 | 
                +        return self.latest_adr_url or u'{}{}'.format(settings.DOMAIN, self.latest_adr_app and self.latest_adr_app.url)
               | 
            |
| 40 | 45 | 
                 | 
            
| 41 | 46 | 
                @property  | 
            
| 42 | 47 | 
                def data(self):  | 
            
| 43 | 48 | 
                         return {
               | 
            
| 44 | 
                - 'latest_version': self.latest_version,  | 
            |
| 45 | 
                - 'latest_url': self.final_latest_url,  | 
            |
| 49 | 
                + 'latest_adr_version_code': self.latest_adr_version_code,  | 
            |
| 50 | 
                + 'latest_adr_version_name': self.latest_adr_version_name,  | 
            |
| 51 | 
                + 'latest_adr_url': self.final_latest_adr_url,  | 
            |
| 52 | 
                + 'latest_ios_version_code': self.latest_ios_version_code,  | 
            |
| 53 | 
                + 'latest_ios_version_name': self.latest_ios_version_name,  | 
            |
| 54 | 
                + 'latest_ios_url': self.latest_ios_url,  | 
            |
| 46 | 55 | 
                }  | 
            
| 47 | 56 | 
                 | 
            
| 48 | 57 | 
                 | 
            
                @@ -5,7 +5,7 @@ from django.http import JsonResponse  | 
            ||
| 5 | 5 | 
                from django.shortcuts import redirect  | 
            
| 6 | 6 | 
                 | 
            
| 7 | 7 | 
                from account.models import UserInfo  | 
            
| 8 | 
                -from operation.models import FeedbackInfo, LatestAppInfo, SplashInfo  | 
            |
| 8 | 
                +from operation.models import FeedbackInfo, SplashInfo  | 
            |
| 9 | 9 | 
                from utils.error.errno_utils import UserStatusCode  | 
            
| 10 | 10 | 
                from utils.error.response_utils import response  | 
            
| 11 | 11 | 
                from utils.redis.rapp import get_latest_app  | 
            
                @@ -17,11 +17,26 @@ def upgrade_api(request):  | 
            ||
| 17 | 17 | 
                :param request:  | 
            
| 18 | 18 | 
                :return:  | 
            
| 19 | 19 | 
                """  | 
            
| 20 | 
                + latest_app = get_latest_app()  | 
            |
| 21 | 
                +  | 
            |
| 22 | 
                + if request.iOS:  | 
            |
| 23 | 
                +        appinfo = {
               | 
            |
| 24 | 
                +            'latest_version_code': latest_app.get('latest_ios_version_code', ''),
               | 
            |
| 25 | 
                +            'latest_version_name': latest_app.get('latest_ios_version_name', ''),
               | 
            |
| 26 | 
                +            'latest_url': latest_app.get('latest_ios_url', ''),
               | 
            |
| 27 | 
                + }  | 
            |
| 28 | 
                + else:  | 
            |
| 29 | 
                +        appinfo = {
               | 
            |
| 30 | 
                +            'latest_version_code': latest_app.get('latest_adr_version_code', ''),
               | 
            |
| 31 | 
                +            'latest_version_name': latest_app.get('latest_adr_version_name', ''),
               | 
            |
| 32 | 
                +            'latest_url': latest_app.get('latest_adr_url', ''),
               | 
            |
| 33 | 
                + }  | 
            |
| 34 | 
                +  | 
            |
| 20 | 35 | 
                     return JsonResponse({
               | 
            
| 21 | 36 | 
                'status': 200,  | 
            
| 22 | 37 | 
                'message': u'获取最新版信息成功',  | 
            
| 23 | 38 | 
                         'data': {
               | 
            
| 24 | 
                - 'appinfo': get_latest_app(),  | 
            |
| 39 | 
                + 'appinfo': appinfo,  | 
            |
| 25 | 40 | 
                },  | 
            
| 26 | 41 | 
                })  | 
            
| 27 | 42 | 
                 | 
            
                @@ -79,4 +94,4 @@ def download_api(request):  | 
            ||
| 79 | 94 | 
                return redirect(settings.DOWNLOAD_WX_URL)  | 
            
| 80 | 95 | 
                if request.iOS:  | 
            
| 81 | 96 | 
                return redirect(settings.DOWNLOAD_IOS_URL)  | 
            
| 82 | 
                -    return redirect(get_latest_app().get('latest_url', ''))
               | 
            |
| 97 | 
                +    return redirect(get_latest_app().get('latest_adr_url', ''))
               | 
            
                @@ -269,7 +269,8 @@ PAI2_HOME_MAX_ROWS = 400 # 首页照片最大数量, PAI2_HOME_PER_PAGE * PAI2_  | 
            ||
| 269 | 269 | 
                 | 
            
| 270 | 270 | 
                # 下载页设置  | 
            
| 271 | 271 | 
                 DOWNLOAD_TMPL_PATH = os.path.join(BASE_DIR, 'page/templates/page/download.tmpl.html').replace('\\', '/')
               | 
            
| 272 | 
                -DOWNLOAD_PAGE_PATH = os.path.join(BASE_DIR, 'page/templates/page/download.html').replace('\\', '/')
               | 
            |
| 272 | 
                +DOWNLOAD_ADR_PAGE_PATH = os.path.join(BASE_DIR, 'page/templates/page/adr_download.html').replace('\\', '/')
               | 
            |
| 273 | 
                +DOWNLOAD_IOS_PAGE_PATH = os.path.join(BASE_DIR, 'page/templates/page/ios_download.html').replace('\\', '/')
               | 
            |
| 273 | 274 | 
                 | 
            
| 274 | 275 | 
                # 下载设置  | 
            
| 275 | 276 | 
                DOWNLOAD_WX_URL = ''  |